#include "Widget.h"
#include <QDebug>       //打印 的 头文件
#include <QPushButton>  //按钮控件头文件

#include <QLabel>   //文本控件
#include <QSlider>  //滑动条控件
#include <QProgressBar> //进度条控件
#include <QTextEdit>    //文本编辑框控件

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //定义最大化按钮  (被观察者)
    //auto btnMax = new QPushButton("最大化", this);
    QPushButton* btnMax = new QPushButton("最大化", this);

    this->connect(btnMax, &QPushButton::clicked, this, &Widget::showMaximized);

    QPushButton* btnMin = new QPushButton("最小化", this);
    this->connect(btnMin, &QPushButton::clicked, this, &Widget::showMinimized);
    btnMin->move(100, 0);

    QPushButton* btnNormal = new QPushButton("正常", this);
    this->connect(btnNormal, &QPushButton::clicked, this, &Widget::showNormal);
    btnNormal->move(200, 0);

    QPushButton* btn_1 = new QPushButton("老鼠", this);
    btn_1->move(300, 0);
    //connet 函数的第二种用法
    this->connect(btn_1, &QPushButton::pressed,[]{
        qDebug()<<"老鼠被打了";
    });
    this->connect(btn_1, &QPushButton::released,[]{
        qDebug()<<"老鼠反抗了";
    });


    // Lamda 表达式
//    int num = 1;
//    void (*pFun)(int&) = [](int& n)->void{
//        n = 250;
//        qDebug()<<n;
//    };
//    pFun(num);
    //------------------------------常用控件

    //---文字控件
    QLabel* label = new QLabel;    //可以默认构造函数传参
    label->setParent(this);
    label->move(0, 100);
    label->setText("今天天气如何");
    label->setFont(QFont("微软雅黑", 20, 2, true));

    //---滑动条控件
    QSlider* slider = new QSlider;
    slider->setParent(this);
    slider->move(200, 200);
    slider->setValue(0);
    slider->setMaximum(100);
    connect(slider,&QSlider::valueChanged,[label](int _value){
        label->setFont(QFont("楷体", _value, 10, true));
        label->resize(500, _value+100);

    } );

    //---进度条控件
    QProgressBar* proBar = new QProgressBar;
    proBar->setParent(this);
    proBar->move(0, 300);
    proBar->resize(this->size().width(), 20);
    proBar->setValue(0);
    //滑动条控制进度条
    connect(slider, &QSlider::valueChanged, [proBar](int _value){
        proBar->setValue(_value);
    });

    this->connect(btn_1, &QPushButton::clicked, [proBar](){
        static int value = 0;
        proBar->setValue(value++);
    });

    //---文本编辑框
    QTextEdit* edit = new QTextEdit;
    edit->setParent(this);
    edit->move(0, 500);
    QString string;
    edit->setFontUnderline(1); //设置文字下划线
    edit->setFontPointSize(50.5);    //设置文字大小
    edit->setText("点此输入");  //设置文字

    connect(edit,&QTextEdit::textChanged, [label, edit](){
        QString text = edit->toPlainText(); //获取文本内容
        label->setText(text);
    });
//    connect(edit,&QTextEdit::textChanged, [proBar](int _value){
//        proBar->setValue(_value);
//    });
    //老版本qt4以前的信号和槽的连接方式
    QPushButton* btn_0 = new QPushButton("老版本测试按钮", this);
    connect(btn_0, SIGNAL(clicked()), SLOT(showMaximized()));
    btn_0->move(200, 100);






}

Widget::~Widget()
{
}

